package arrays;

import java.util.HashSet;
import java.util.Set;

/**
 * @author pengfei.hpf
 * @date 2020/3/25
 * @verdion 1.0.0
 * 531. 孤独像素 I
 * 给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。
 *
 * 图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。
 *
 * 黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。
 *
 * 示例:
 *
 * 输入:
 * [['W', 'W', 'B'],
 *  ['W', 'B', 'W'],
 *  ['B', 'W', 'W']]
 *
 * 输出: 3
 * 解析: 全部三个'B'都是黑色孤独像素。
 *
 *
 * 注意:
 *
 * 输入二维数组行和列的范围是 [1,500]。
 *
 */
public class FindLonelyPixel {
    public int findLonelyPixel(char[][] picture) {
        if(picture == null || picture.length == 0){
            return 0;
        }
        int r = 0;
        Set<Integer> uset = new HashSet<Integer>();
        int count = 0;
        while(r < picture.length){
            int bcount = 0;
            boolean colAlone = true;
            for(int c = 0; c < picture[0].length; c ++){
                if(picture[r][c] == 'B'){
                    bcount ++;
                    if(bcount > 1){
                        break;
                    }
                    if(uset.contains(c)){
                        colAlone = false;
                    } else {
                        colAlone  = isColAlone(r + 1, c, picture);
                        uset.add(c);
                    }
                }
            }
            colAlone = colAlone & bcount == 1;
            if(colAlone){
                count ++;
            }
            r ++;
        }

        return count;
    }

    private boolean isColAlone(int r, int c, char[][] picture){
        for(; r < picture.length; r ++){
            if(picture[r][c] == 'B'){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args){

        String s = "123";
        System.out.println(s.substring(1,2));
    }
}
